Projekt: | Jax Newsletter (Programm zur Verwaltung von Mailinglisten) | |||||||||||||||
File: | jax_newsletter.php | |||||||||||||||
Version: | 1.02 (mit optionaler MySQL-Datenbankunterstützung) | |||||||||||||||
Interpreter: | PHP 4.02+ | |||||||||||||||
Code: | Andreas John | |||||||||||||||
Design: | Andreas John | |||||||||||||||
Homepage: | www.jtr.de/scripting/php/newsletter | |||||||||||||||
Lizenz: |
Copyright (C) 2001, Andreas John (Jack (tR)) Dieses Programm unterliegt der "General Public License" in der Version
2 oder neuer! Den genauen Wortlaut dieser Lizenz finden Sie in der beiliegenden
Datei gpl.txt, bzw. auf der Website der Free Software Foundation unter
http://www.fsf.org/copyleft/gpl.html |
|||||||||||||||
Credits: |
Mein persönliches Dankeschön vor allem an:
|
1. Was ist Jax Newsletter ? Wozu brauche ich das Programm ?
Jax Newsletter ist ein Skript, mit dem Sie direkt auf Ihrer Website Mailinglisten erstellen, verwalten und e-mails an diese Listen versenden können.
Darüber hinaus bietet Ihnen Jax Newsletter zur Zeit folgende Leistungsmerkmale:
Die Mailingliste funktioniert (standardmäßig) folgendermaßen:
1.
Das Startskript heißt jax_newsletter.php und kann vom Webmaster mit folgenden Parametern aufgerufen werden.
Beispiel:
http://..../jax_newsletter.php?ml_id=1&language=English
ml_id gibt die zu verwendende Mailingliste an.
Wenn Sie keinen Parameter angeben, wird ml_id=0 voreingestellt.
Wenn Sie einen Parameter angeben, müssen Sie globals.inc.php entsprechend
anpassen (siehe --> Kann Jax Newsletter mehrere Mailinglisten
verwalten? )
language gibt die zu verwendende Sprachvorlage an.
Wenn Sie einen Parameter angeben, stellen Sie sicher, dass eine entsprechende
Vorlagendatei im Verzeichnis language existiert
jax_newsletter.php stellt dem Besucher Links zu zwei Webseiten bereit, auf denen sich der Besucher per Formular in die Mailingliste ein- (sign_in.php) oder austragen (sign_out.php) kann.
2.
Trägt sich ein Besucher in die Mailingliste ein oder aus, so werden die eingegebenen Daten in einer Protokolldatei (standardmäßig records) gespeichert. Ausserdem wird ein "pseudo-zufällig" generierter Schlüssel zusammen mit der e-mail-Adresse in der Datei subscriberlist gespeichert.
Um sicherzustellen, dass niemand unerwünscht die e-mail-Adresse eines anderen in die Liste einträgt, bzw. aus der Liste austrägt, bekommt der "Eigentümer" der e-mail-Adresse durch das Skript (sign.php) eine e-mail geschickt. Diese e-mail enthält einen Hyperlink auf das Skript verify.php, den der Empfänger anklicken muß, um sich entgültig in die Mailingliste ein- oder auszutragen:
Beispiel:
http://.../newsletter/verify.php?language=German&ml_id=0&do=sign&uid=3406044545....
do gibt an, ob sich der Benutzer ein oder austrägt.
uid enthält den von sign.php erzeugten Schlüssel, den verify.php jetzt mit dem Schlüssel in der Datei subscriberlist vergleicht. Ist der Vergleich erfolgreich, wird der entsprechende Eintrag in der Datei subscriberlist.csv gelöscht und die e-mail-Adresse in die Mailingliste (mailinglist) übernommen, bzw. gelöscht...
3.
Möchten Sie Benutzer von Hand aus der Mailingliste löschen, steht Ihnen dazu das Script list.admin.php im Verzeichnis admin zur Verfügung. Um es zu benutzen rufen Sie am besten das Skript index.php im Verzeichnis admin auf!
Beispiel:
http://..../admin/index.php?language=German
4.
Um eine Nachricht an die Mailingliste zu schicken, rufen Sie das Skript posting.php (am besten auch über index.php) auf. Geben Sie die Nachricht ein und drücken Sie auf Senden.
Wichtig:
Damit das Skript alle Nachrichten verschicken kann, muß die Browserverbindung "offen" gehalten werden. Sie dürfen also das Browserfenster erst schließen, wenn Sie eine Bestätigungsemail erhalten, dass alle e-mails erfolgreich verschickt wurden!
2. Wie installiere ich Jax Newsletter auf meiner Website? (ohne MySQL)
Jax Newsletter wurde in der Skriptsprache PHP 4 geschrieben und setzt PHP - eine serverseitige Programmiersprache, mit der man dynamisch erzeugte Webseiten erstellen kann - voraus!
(Fragen Sie ggfs. Ihren Web-Provider nach PHP-Unterstützung!)
Jax Newsletter läuft auch ohne MySQL-Unterstützung!
Verfügen Sie bereits über PHP-Unterstützung, dann tun Sie einfach folgendes:
3. Wie kann ich Jax Newsletter mit MySQL benutzen?
Jax Newsletter wurde so entworfen, dass es sowohl einfache Textdateien, als auch MySQL-Datenbanktabellen zur Speicherung der Einträge verwenden kann. Die Verwendung der MySQL-Datenbank ist bei großen Mailinglisten mit vielen Einträgen in der Regel schneller als die CSV-Variante...
Verfügen Sie über MySQL-Unterstützung dann tun Sie folgendes:
CREATE TABLE mailinglist ( id int(16) NOT NULL auto_increment, username varchar(64) NOT NULL default '', domain varchar(64) NOT NULL default '', PRIMARY KEY (id) ) TYPE=MyISAM; CREATE TABLE records ( id int(16) NOT NULL auto_increment, action char(1) NOT NULL default '', time datetime NOT NULL default '0000-00-00 00:00:00', ip varchar(11) NOT NULL default '', email varchar(128) NOT NULL default '', profession varchar(128) NOT NULL default '', age year(4) NOT NULL default '0000', nationality varchar(64) NOT NULL default '', PRIMARY KEY (id) ) TYPE=MyISAM; CREATE TABLE subscriberlist ( id int(16) NOT NULL auto_increment, date date NOT NULL default '0000-00-00', hash varchar(32) NOT NULL default '', email varchar(128) NOT NULL default '', PRIMARY KEY (id) ) TYPE=MyISAM;
4. Wie viele Einträge kann Jax Newsletter speichern?
Getestet habe ich das Skript nur mit einer kleinen, realistischen Menge von Einträgen (ca.1500 Einträge im CSV-Format). Theoretisch müsste das Skript (je nach verfügbarer Rechenzeit/-leistung und Datenquelle) problemlos mehrere 1000 Einträge verwalten können. Für größere Mailinglisten bietet sich die Verwendung von MySQL als Datenquelle an.
5. Kann Jax Newsletter mehrere Mailinglisten gleichzeitig verwalten?
Kein Problem! :-)
Möchten Sie mehr als einen Newsletter über das Skript "versorgen",
gibt es zwei Möglichkeiten:
Entweder:
Sie legen für jeden Newsletter ein separates Verzeichnis mit einem separaten Skript an. Diese Möglichkeit kann bei mehreren Newslettern schnell unübersichtlich werden.
Oder:
Sie rufen das Newsletterskript mit dem Parameter ml_id auf. z.B:
http://../jax_newsletter.php?ml_id=1
Aus Sicherheitsgründen kann der Dateiname der Mailinglist nicht direkt mit der URL weitergegeben werden.
Die Zuordnung zwischen Mailinglist-ID und Mailinglist müssen Sie (zur Zeit) per Hand in der Datei globals.inc.php vornehmen:
...
// Titel des Newsletters
$newsletters[0]->title = "Jax Newsletter (English)";
$newsletters[0]->data_source = "csvfile";// CSS template for the Guestbook
$newsletters[0]->css = "styles/default.css";
$newsletters[0]->do_log = true;
$newsletters[0]->logfile = "records";
$newsletters[0]->subscriberlist = "subscriberlist";
$newsletters[0]->mailinglist = "mailinglist";
$newsletters[0]->db_server = "";
$newsletters[0]->db_login = "";
$newsletters[0]->db_database = "";
$newsletters[0]->db_password = "";$newsletters[1]->title = "Jax Newsletter (German)";
$newsletters[1]->data_source = "mysql";
$newsletters[1]->css = "styles/default.css";
$newsletters[1]->do_log = true;
$newsletters[1]->logfile = "records";
$newsletters[1]->subscriberlist = "subscriberlist";
$newsletters[1]->mailinglist = "mailinglist";
$newsletters[1]->db_server = "mysql4.webpack.hosteurope.de";
$newsletters[1]->db_login = "ftp19999";
$newsletters[1]->db_database = "mailinglist";
$newsletters[1]->db_password = "banane";...
Im Beispiel wird eine weitere Mailingliste mit dem selben Skript benutzt::
Die zweite Mailingliste wird auf einem mysql-Datenbankserver abgelegt. Sie ist damit über die URL http://../jax_newsletter.php?ml_id=1 erreichbar
Äquivalent würde mit der URL http://../jax_newsletter?ml_id=2 eine dritte Mailinglistendatei zur Speicherung verwendet usw...Sie können für jede Mailingliste die Datenquelle (mysql/csvfile) frei wählen!
- Wenn der Datenstrom zum Browser während des Sendens unterbrochen wird (z.B. wegen eines Proxy-Timeouts), kann es vorkommen , dass nicht alle Empfänger die Nachricht erhalten. Ausserdem kann es bei größeren Mailinglisten zu starker Zeitverzögerung kommen.
An Alternativen wird gearbeitet! :-)
Sollten Sie einen Fehler finden, oder haben Sie Fragen oder Verbesserungsvorschläge, zögern Sie bitte nicht, und wenden Sie sich einfach direkt an mich!
Berlin, 30.12.2001 Jack (tR)